home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- * sp.c
- ******************************************************************************
- *
- * Purpose:
- * contains main and the event loop
- *
- * Authors:
- * Michael Teschner and Christian Henn
- *
- * Note:
- * None.
- *
- * Revisions:
- * 10.11.93 micha Created file.
- *
- ******************************************************************************
- *
- * COPYRIGHT (C) 1992, 1993, 1994
- *
- * BY CHRISTIAN HENN M.E. MUELLER-INSTITUTE FOR MICROSCOPY (MIM)
- * HENN@COMP.BIOZ.UNIBAS.CH CH-4056 BASEL, SWITZERLAND
- *
- * AND MICHAEL WALDHERR-TESCHNER SILICON GRAPHICS INDUSTRIES (SGI)
- * MICHA@BASEL.SGI.COM CH-4125 RIEHEN, SWITZERLAND
- *
- ******************************************************************************
- *
- * PERMISSION TO USE, COPY, MODIFY AND DISTRIBUTE THIS SOFTWARE AND ITS DOCU-
- * MENTATION FOR THE PURPOSE OF RESEARCH, DEVELOPMENT AND EDUCATION IS HEREBY
- * GRANTED FREE OF CHARGE, SUBJECT TO THE FOLLOWING RESTRICTIONS:
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS,
- * IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF DESIGN,
- * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ARISING FROM A
- * COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * IN NO EVENT SHALL SILICON GRAPHICS OR THE M.E. MUELLER-INSTITUTE BE LIABLE
- * FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- *
- ******************************************************************************
- */
- #include <stdio.h>
- #include <gl/gl.h>
- #include <gl/device.h>
- #include <gl/get.h>
- #include <math.h>
- #include "trackball.h"
-
- int shade_flag ;
- int line_flag = 0;
- int high_tex = 1;
- int solid_flag = 1;
-
- float fog_par[5];
- int fog_f = 0;
-
-
- main(int argc, char *argv[])
- {
- int win_id;
- int loop, dev, i, j;
- short code;
-
- if( argc == 1 ) shade_flag = 0;
- else shade_flag = 1;
-
- foreground();
-
- keepaspect(1,1);
- minsize( 500, 500);
- if( shade_flag ) win_id = winopen("phong");
- else win_id = winopen("gouraud");
-
- doublebuffer();
- RGBmode();
- RGBcolor(0,0,0);
- clear();
- gconfig();
-
- subpixel(TRUE);
-
- zbuffer(TRUE);
- gr_init();
- mmode(MVIEWING);
-
- sbr_ini_trackball(win_id);
-
- qdevice( ESCKEY );
- qdevice( F12KEY );
- qdevice( F11KEY );
-
- qdevice( F1KEY );
- qdevice( F2KEY );
- qdevice( F3KEY );
- qdevice( F4KEY );
- qdevice( F5KEY );
- qdevice( F6KEY );
- qdevice( F7KEY );
- qdevice( F8KEY );
- qdevice( F9KEY );
- qdevice( F10KEY );
- qdevice( F11KEY );
- qdevice( F12KEY );
-
- qdevice( NKEY );
- qdevice( MKEY );
- qdevice( SKEY );
- qdevice( FKEY );
- qdevice( IKEY );
-
- loop = TRUE;
- zbuffer(TRUE);
-
- fog_par[0] = -1.5/2.;
- fog_par[1] = 1.5 / 2;
- fog_par[2] = fog_par[3] = fog_par[4] = 0;
- fogvertex(FG_VTX_LIN,fog_par);
-
- sbr_bind_high();
-
- while(loop){
-
- if( qtest() /* || ! attached */){
-
- dev = qread(&code);
-
- if( code == 0 ) continue;
- switch(dev) {
- case ESCKEY : loop = FALSE;
- break;
- case F1KEY : shade_flag = 1;
- break;
- case F2KEY : shade_flag = 0;
- break;
- case F3KEY : sbr_bind_high();
- break;
- case F4KEY : sbr_bind_low();
- break;
-
- case IKEY : system (" ipaste texture.rgb ");
- break;
-
- case MKEY : high_tex = (high_tex) ? 0 : 1;
- break;
- case NKEY : line_flag = (line_flag) ? 0 : 1;
- break;
- case SKEY : solid_flag = (solid_flag) ? 0 : 1;
- break;
- case FKEY : if( fog_f == 1){
- fogvertex(FG_OFF, fog_par);
- fog_f = 0;
- }
- else {
- fogvertex(FG_ON, fog_par);
- fog_f = 1;
- }
- break;
- }
- }
-
- reshapeviewport();
- do_trackball();
-
- scene_draw();
-
-
- }
-
- winclose(win_id);
-
- }
-
-